<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <!-- 
    git是最典型的版本控制软件 ：
    版本控制软件是一个用来记录文件变化，以便将来查阅特定版本修订情况的系统版本控制系统。
    通俗讲，把手工管理文件版本的方式，改为由软件管理文件的版本
    这个负责管理文件版本的软件，叫做版本控制软件

    版本控制新系统分三类
    本地版本控制系统：1、单机运行，不支持多人协作开发 2、版本数据库故障后，所有历史更新记录会丢失
    集中化的版本控制系统 特点：基于服务器、客户端的运行模式。① 服务器保存文件的所有更新记录
    优点：联网运行，支持多人协作开发  缺点：1、不支持离线提交版本更新
     2、中心服务器崩溃后，所有人无法正常工作  3、版本数据库故障后，所有历史更新记录会丢失
     
     分布式版本控制系统 典型代表：Git
     特点：基于服务器、客户端的运行模式。① 服务器保存文件的所有更新版本
     ② 客户端是服务器的完整备份，并不是只保留文件的最新版本
     优点：1、联网运行，支持多人协作开发   2、客户端断网后支持离线本地提交版本更新
      3、服务器故障或损坏后，可使用任何一个客户端的备份进行恢复

      、Git 的特点
    Git 之所以快速和高效，主要依赖于它的如下两个特性：
    ① 直接记录快照，而非差异比较
    ② 近乎所有操作都是本地执行
    如果文件没有修改，不再重新存储该文件，而是保留一个链接指向之前存储的文件
    如果文件修改了，直接生成一个新文件，类似备份

    SVN 的差异比较
    传统的版本控制系统（例如 SVN）是基于差异的版本控制，它们存储的是一组基本文件和每个文件随时间逐步累积的差异
    缺点：耗时、效率低。  在每次切换版本的时候，都需要在基本文件的基础上，应用每个差异，从而生成目标版本对应的文件
    通俗理解就是写一个基本文件，然后更新版本只记录文件的变化或修改的东西 
    而git是更新版本就把这个更新好的版本记录下来 切换版本更快

    git的三个区域 工作区就是写文件的区域  就是创建一个库git init命令
       暂存区，就是工作区写好的代码，用git add .就可以存放到暂存区了
       git仓库，也叫本地仓库，用命令 git commit -m 数据初始值 就把暂存区的文件放到了本地仓库
       后面再把本地仓库放到远程仓库就可

       工作区文件的四个状态，未跟踪(git不知道它的存在，不被git管理)，已跟踪，已修改，未修改（工作区文件的内容和git仓库的文件内容），已经暂存，未跟踪就是在工作区
       使用git add . 就会把文件标记跟踪，放到在暂存区
       检查文件的状态命名 git status
       修改过的、没有放入暂存区的文件前面有红色的 M 标记。


       git的三种状态 已修改modified 表示修改了文件，但还没将修改的结果放到暂存区
       已暂存 staged 表示对已经修改文件的当前版本做了标记，使之包含在下次提交的列表中
       已提交commited 表示文件已经安全地保存在本地的git仓库中

       git的工作流程，1:在工作区中修改文件 放到暂存区，2：将下次要提交哦的更改进行暂存，
       3：提交更新，找到暂存区的文件，将快照永久性存储到git仓库


       在现有目录中初始化仓库（重要）
       ① 在项目目录中，通过鼠标右键打开“Git Bash” 

       ② 执行 git init 命令将当前的目录转化为 Git 仓库

       目前，工作区中的 index.html 文件已被修改，如果要暂存这次修改，需要再次运行 git add 命令，这个命令是个多功能的命令，主要有如下 3 个功效：

① 可以用它 开始跟踪新文件

② 把 已跟踪的、且已修改 的文件放到暂存区

③ 把有冲突的文件标记为已解决状态


     -->
</body>
</html>